import { http } from './request.js';
import storage from '@/utils/storage.js';
import { cartApi } from './cart.js';

// 用户认证相关API
export const authApi = {
    // 管理员/普通用户登录
    login(data) {
        return http.post('/auth/login', data)
            .then(result => {
                if (result.code === 200 && result.data) {
                    // 保存Token和用户信息
                    storage.setToken(result.data.token);
                    storage.setUserInfo(result.data.userInfo);

                    // 同步本地购物车到服务器
                    cartApi.syncLocalCartToServer()
                        .then(syncResult => {
                            console.log('购物车同步结果:', syncResult);
                        })
                        .catch(err => {
                            console.error('购物车同步失败:', err);
                        });
                }
                return result;
            });
    },

    // 微信小程序通过code获取openid登录/注册
    wechatLogin(data) {
        return http.post('/auth/wechat/login', data);
    },

    // 微信小程序通过手机号code获取手机号并登录/注册
    wechatPhoneLogin(data) {
        return http.post('/auth/wechat/phone-login', data);
    },

    // 仅获取微信openid，不执行登录
    getWechatOpenid(data) {
        return http.post('/auth/wechat/get-openid', data);
    },

    // 用户注册
    register(userData) {
        return http.post('/auth/register', userData);
    },

    // 获取用户信息
    getUserInfo() {
        return http.get('/auth/userInfo');
    },

    // 退出登录
    logout() {
        return http.post('/auth/logout')
            .then(result => {
                // 无论成功失败，清除本地存储的token和用户信息
                storage.clearUserData();
                return result;
            });
    },

    // 修改密码
    changePassword(data) {
        return http.put('/auth/password', data);
    },

    // 刷新token
    refreshToken() {
        return http.post('/auth/refresh');
    },

    // 发送短信验证码
    sendSmsCode(data) {
        return http.post('/auth/sms/send', data);
    },

    // 手机号验证码登录
    loginByPhone(data) {
        return http.post('/auth/login/phone', data)
            .then(result => {
                if (result.code === 200 && result.data) {
                    // 保存Token和用户信息
                    storage.setToken(result.data.token);
                    storage.setUserInfo(result.data.userInfo);

                    // 同步本地购物车到服务器
                    cartApi.syncLocalCartToServer()
                        .then(syncResult => {
                            console.log('购物车同步结果:', syncResult);
                        })
                        .catch(err => {
                            console.error('购物车同步失败:', err);
                        });
                }
                return result;
            });
    },

    // 微信小程序登录
    loginByWechat(data) {
        return http.post('/auth/login/wechat', data)
            .then(result => {
                if (result.code === 200 && result.data) {
                    // 保存Token和用户信息
                    storage.setToken(result.data.token);
                    storage.setUserInfo(result.data.userInfo);

                    // 同步本地购物车到服务器
                    cartApi.syncLocalCartToServer()
                        .then(syncResult => {
                            console.log('购物车同步结果:', syncResult);
                        })
                        .catch(err => {
                            console.error('购物车同步失败:', err);
                        });
                }
                return result;
            });
    }
};